import axios from 'axios'
import { ElMessage } from 'element-plus'
import router from '../router'

//创建axios实例对象
const request = axios.create({
  baseURL: '/api',
  timeout: 600000
})
//axios的请求 request 拦截器, 每次请求获取localStorage中的loginUser, 从中获取到token, 在请求头token中携带到服务端
request.interceptors.request.use(
  (config) => {
    // 关键调试：打印 localStorage 中的 loginUser
    // console.log('localStorage loginUser:', localStorage.getItem('loginUser'));
    let loginUser = JSON.parse(localStorage.getItem('loginUser') || 'null');
    // console.log('解析后的 loginUser:', loginUser);

    if (config.url !== '/api/nepg/login') {
      if (loginUser) {
        // 确认 token 字段名是否正确（workerToken 是否存在）
        // console.log('当前 token:', loginUser);
        config.headers.workerToken = loginUser;
      }
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);
// axios 的响应 response 拦截器
request.interceptors.response.use(
  (response) => { // 成功回调：直接返回响应体的 data
    return response.data;
  },
  console.log('响应拦截器'),
  (error) => { // 失败回调：处理 401 等错误
    if (error.response && error.response.status === 401) { 
      // 登录超时，提示并跳转登录页
      ElMessage.error('登录超时，请重新登录');
      router.push('/login');
    }else if (error.response && error.response.status === 500) { 
     ElMessage.error('登录超时，请重新登录');
      router.push('/login');
    }
    // 其他错误继续抛出 Promise.reject
    return Promise.reject(error);
  }
);

export default request